﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
#if !DOT_NET
using Windows.Foundation;

#endif

namespace StyleMVVM.Logging
{
	public interface ILog
	{
#if NETFX_CORE
		IAsyncOperation<bool> Configure();
#else
		Task<bool> Configure();
#endif

		LogLevel LoggingLevel { get; set; }

		void Flush();

		void Debug(string message);

		void Debug(string message, string supplemental);

		void Debug(string message, string supplemental, Exception exp);

		void Info(string message);

		void Info(string message, string supplemental);

		void Info(string message, string supplemental, Exception exp);

		void Warn(string message);

		void Warn(string message, string supplemental);

		void Warn(string message, string supplemental, Exception exp);

		void Error(string message);

		void Error(string message, string supplemental);

		void Error(string message, string supplemental, Exception exp);

		void Fatal(string message);

		void Fatal(string message, string supplemental);

		void Fatal(string message, string supplemental, Exception exp);

		void Log(LogEntry logEntry);
	}
}